package com.ucode.crm.service;

import java.util.Date;
import java.util.List;
import com.ucode.crm.mode.Customer;
import com.ucode.tool.base.Paginator;

public interface CustomerService {

    /**
     * 添加客户
     * @author liliang
     * @date 2020年2月19日
     * @param customer
     * @return
     */
    public Customer insert(Customer customer);
    /**
     * 更新锁定状态
     * @author liliang
     * @date 2020年6月8日
     * @param id
     * @param lockStatus 锁定状态:0->解锁1->锁定
     * @return
     */
    public int updateLock(Long id,Integer lockStatus);
    
    /**
     * 非公海客户逻辑删除(可恢复)
     * @author liliang
     * @date 2020年2月19日
     * @param ids 客户id
     * @return
     */
    public int deleteByLogic(Long id);
    
    /**
     * 公海客户逻辑删除(可恢复)
     * @author liliang
     * @date 2020年2月19日
     * @param ids 客户id
     * @return
     */
    public int deletePoolByLogic(Long id);
    
    /**
     * 物理删除(彻底删除)
     * @author liliang
     * @date 2020年2月19日
     * @param ids
     * @return
     */
    public int delete(List<Long> ids);
    
    /**
     * 更新客户信息
     * @author liliang
     * @date 2020年2月1日
     * @param customer
     * @return
     */
    public int update(Customer customer);
    
    /**
     * 转移客户
     * @author liliang
     * @date 2020年2月15日
     * @param id 客户主键
     * @param ownerUserId 负责人
     * @param operatorId 操作人
     * @return
     */
    public int transfer(Long id,Long ownerUserId,Long operatorId);
    
    /**
     * 放入公海
     * @author liliang
     * @date 2020年2月18日
     * @param id 客户主键
     * @param operatorId 操作人
     * @return
     */
    public int putInPool(Long id,Long operatorId);
    
    /**
     * 公海领取(分配)客户
     * @author liliang
     * @date 2020年2月18日
     * @param id
     * @param ownerUserId
     * @param operatorId
     * @return
     */
    public int receive(Long id,Long ownerUserId,Long operatorId);
    
    /**
     * 主键查询
     * @author liliang
     * @date 2020年2月3日
     * @param id 
     * @return
     */
    public Customer findById(Long id);
    
    /**
     * 主键集合查询
     * @author liliang
     * @date 2020年2月18日
     * @param ids
     * @return
     */
    public List<Customer> findByIds(List<Long> ids);
    
    /**
     * 分页查询公海客户
     * @author liliang
     * @date 2020年3月5日
     * @param name 客户名称(前模糊查询)
     * @param mobile 联系电话(手机号或者电话前模糊查询)
     * @param areaId 位置
     * @param level 客户级别
     * @param source 客户来源
     * @param startTime 最后跟进时间在startTime之后
     * @param endTime 最后跟进时间在startTime之前
     * @param pagesize
     * @param page
     * @return
     */
    public Paginator<Customer> queryPoolPage(String name,String mobile,Integer areaId,Integer level,Integer source,Date startTime,Date endTime,int pagesize,int page);
    
}
